package zju.dgm.service.loadbalance;

import zju.dgm.dto.ServerInfo;

/**
 * @author lzy
 */
public interface LoadBalanceUtilProvider {

    /**
     * 当需要一个Server节点去向其他节点请求表信息时，通过负载均衡接口获取，默认尝试次数为3次，不应该在数据表在当前server时中调用
     * @param tableName 表名
     * @return 目的Server信息，如果返回null为出错
     */
    ServerInfo getRequestingServer(String tableName) throws Exception;

    /**
     * 指定尝试次数的获取节点分布，不应该在数据表在当前server时中调用
     * @param tableName
     * @param times
     * @return
     * @throws Exception
     */
    ServerInfo tryGetRequestingServer(String tableName,int times) throws Exception;


    /**
     * 在本地查询table时调用，用于统计负载
     * @param table
     */
    void touch(String table);





}
